package 其他.数字矩阵中服务器的最大个数_2;

import java.util.Scanner;

public class Main {

    public static int count;  // 静态变量只可以是成员变量

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt(); // n 行
        int m = scanner.nextInt();// m 列
        scanner.nextLine(); // 读取剩余的换行符
        int[][] ints = new int[n][m];
        // 给二维数组读取赋值
        for (int i = 0; i < n; i++) {
            String s = scanner.nextLine();
            String[] split = s.split(" ");
            for (int j = 0; j < m; j++) {
                ints[i][j] = Integer.valueOf(split[j]);
            }
        }
        int max=0;

        // 循环二维数组
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if (ints[i][j]==1){
                     count++; // 用来计数  // 之前这里写的是 count =1 , 会报错~
                    ints[i][j]=0; // 置为0 表示已经访问过
                    dfs(ints,i,j,n,m);
                    max= Math.max(max,count);
                    count=0; // 再次置为0
                }
            }
        }

        System.out.println("最大的服务器的个数为:"+max);
    }

    private static void dfs(int[][] ints, int i, int j,int N , int M) {  //  在这个地方把它作为值进行了传递, 那么并没有改变原来的count 那个静态变量
        if (j+1<M&&ints[i][j+1]==1){ // 向右
            count++;
            ints[i][j+1]=0;
            dfs(ints,i,j+1,N,M);
        }else if(j-1>=0&&ints[i][j-1]==1){// 向左
            count++;
            ints[i][j-1]=0;
            dfs(ints,i,j-1,N,M);
        }else if (i-1>=0&&ints[i-1][j]==1) {// 向上
            count++;
            ints[i-1][j]=0;
            dfs(ints,i-1,j,N,M);
        }else if (i+1<N&&ints[i+1][j]==1){// 向下
            count++;
            ints[i+1][j]=0;
            dfs(ints,i+1,j,N,M);
        }
    }
}
